package vista.paneles;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.MouseListener;
import java.util.List;

import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import logica.Entidad;

@SuppressWarnings("serial")
public class PanelReferenciaEntidades extends JPanel{

	ListConModelo listEntidades;
	JButton btAgregar;
	JButton btQuitar;
	
	public PanelReferenciaEntidades(String titulo)
	{
		super();
		
		GridBagLayout gbl_panelEntidadesDerivadas = new GridBagLayout();
		gbl_panelEntidadesDerivadas.columnWidths = new int[]{160, 110};
		gbl_panelEntidadesDerivadas.rowWeights = new double[]{1.0, 1.0};
		gbl_panelEntidadesDerivadas.rowHeights = new int[]{0, 0};
		gbl_panelEntidadesDerivadas.columnWeights = new double[]{1.0, 1.0};
		
		this.setLayout(gbl_panelEntidadesDerivadas);
		this.setBorder(BorderFactory.createTitledBorder(titulo));
		
		agregarLista();
		agregarBotonAgregar();
		agregarBotonQuitar();
	}
	
	/*para los datos*/
	@SuppressWarnings("unchecked")
	public List<Entidad> getReferenciaEntidades()
	{
		return (List<Entidad>) this.listEntidades.getObjetos();
	}

	/* para eventos */
	public void escucharEventoAgregar(MouseListener controlador)
	{
		this.btAgregar.addMouseListener(controlador);
	}
	
	public void escucharEventoQuitar(MouseListener controlador)
	{
		this.btQuitar.addMouseListener(controlador);
	}
	
	public void agregarEntidadExterna(Entidad entidad)
	{
		this.listEntidades.agregarObjeto(entidad);
	}
	
	public void agregarEntidadesExternas(List<Entidad> entidad)
	{
		this.listEntidades.agregarObjetos(entidad);
	}
	
	public void quitarEntidadExterna()
	{
		this.listEntidades.quitarObejto();
	}
	
	/* para dibujar */
	private void agregarBotonQuitar() 
	{
		btQuitar = new JButton("Quitar");			
		
		GridBagConstraints constraints = new GridBagConstraints();
		constraints.insets = new Insets(1, 2, 5, 2);
		constraints.gridx = 1; 
		constraints.gridy = 1;
		constraints.fill = GridBagConstraints.HORIZONTAL;
		
		this.add(btQuitar, constraints);
	}

	private void agregarBotonAgregar()
	{
		btAgregar = new JButton("Agregar");			
		
		GridBagConstraints constraints = new GridBagConstraints();
		constraints.insets = new Insets(1, 2, 5, 2);
		constraints.gridx = 1; 
		constraints.gridy = 0;
		constraints.fill = GridBagConstraints.HORIZONTAL;

		this.add(btAgregar, constraints);
	}

	private void agregarLista() 
	{
		listEntidades = new ListConModelo();
		
		GridBagConstraints constraints = new GridBagConstraints();
		constraints.insets = new Insets(5, 10, 5, 10);
		constraints.gridx = 0; 
		constraints.gridy = 0;
		constraints.gridheight = 2;
		constraints.fill = GridBagConstraints.BOTH;
		
		this.add(new JScrollPane(listEntidades), constraints);
	}
}
